package com.pn.mapper;

import com.pn.entity.User;
import com.pn.page.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * user_info表的mapper接口
 */
public interface UserMapper {

    /**
     * 根据账号查询用户信息
     *
     * @param userCode 用户账号
     * @return 用户
     */
    User findUserByCode(String userCode);

    /**
     * 分页查询用户的方法
     *
     * @param page 分页信息
     * @param user 条件
     * @return 用户集合
     */
    List<User> findUserByPage(@Param("page") Page page, @Param("user") User user);

    /**
     * 查询数据总条数
     *
     * @param user 条件
     * @return 总条数
     */
    Integer findUserRowCount(User user);

    /**
     * 新增用户
     *
     * @param user 用户对象
     * @return 受影响的行数
     */
    int insertUser(User user);

    /**
     * 修改用户状态 0 禁用 1启用
     *
     * @param userId    用户id
     * @param userState 用户状态
     * @return 影响行数
     */
    int updateUserStateByUid(@Param("userId") Integer userId,
                             @Param("userState") String userState, @Param("updateBy") Integer updateBy);


    /**
     * 批量删除用户
     *
     * @param ids 用户id集合
     * @return 影响行数
     */
    int updateIsDeleteByUids(List<Integer> ids);

    /**
     * 修改用户昵称
     *
     * @param user 用户对象
     * @return 影响行数
     */
    int updateUserByUid(User user);

    /**
     * 重置用户密码
     *
     * @param userId   用户id
     * @param password 新密码
     * @return 影响行数
     */
    int updatePwdByUid(@Param("userId") Integer userId, @Param("password") String password);

}
